نشر تطبيق PHP باستخدام Ansible – إعداد مفاتيح SSH والجدار الناري
تعتبر أتمتة النشر واحدة من أبرز الاتجاهات في تطوير البرمجيات الحديثة، حيث يتم استخدام أدوات متنوعة لزيادة الكفاءة وتقليل الأخطاء البشرية. من بين هذه الأدوات، يتمتع Ansible بشعبية كبيرة لسهولة استخدامه ومرونته في إدارة الخوادم وتهيئة الأنظمة. في هذا المقال، سنتناول كيفية نشر تطبيق PHP باستخدام Ansible، مع التركيز على إعداد مفاتيح SSH والجدار الناري لضمان عملية نشر آمنة وسلسة.
ما هو Ansible؟
Ansible هو أداة أتمتة مفتوحة المصدر تُستخدم في تكوين وإدارة الأنظمة عن بُعد، وتوزيع التطبيقات، وتنفيذ مهام متكررة. تعتمد Ansible على مبدأ “إدارة الحالة” (Declarative Management) حيث يُعرّف المستخدم كيفية تكوين النظام بدلاً من كتابة خطوات تنفيذية. يوفر Ansible العديد من المزايا منها البساطة، وقلة الحاجة إلى تثبيت أي برامج إضافية على الخوادم البعيدة.
خطوة 1: إعداد بيئة العمل
قبل البدء في استخدام Ansible لنشر تطبيق PHP، يجب التأكد من أن البيئة معدة بشكل صحيح. وتشمل هذه البيئة:
-
خوادم الهدف (Target Servers): الخوادم التي سيتم نشر تطبيق PHP عليها.
-
أنظمة تشغيل الخوادم: في هذا المقال، نفترض أن الخوادم تعمل على توزيعة لينكس مثل Ubuntu أو CentOS.
-
Ansible: يجب تثبيت Ansible على الجهاز المحلي أو على جهاز يتحكم في الخوادم.
خطوة 2: إعداد مفاتيح SSH
مفاتيح SSH هي طريقة آمنة للوصول إلى الخوادم البعيدة دون الحاجة إلى استخدام كلمات المرور. لا يقتصر الأمر على تحسين الأمان فحسب، بل يساهم في أتمتة العمليات أيضًا، حيث يمكن لـ Ansible استخدام هذه المفاتيح للوصول إلى الخوادم دون الحاجة إلى تدخل يدوي.
2.1 إنشاء مفاتيح SSH
لإنشاء مفتاح SSH، يمكن للمستخدم استخدام الأمر التالي:
bashssh-keygen -t rsa -b 2048
سيطلب منك هذا الأمر تحديد موقع لحفظ المفتاح، ويفضل استخدام الموقع الافتراضي ~/.ssh/id_rsa. بعد إنشاء المفتاح، يجب عليك نسخ المفتاح العام (~/.ssh/id_rsa.pub) إلى الخوادم التي ستقوم بالاتصال بها باستخدام الأمر ssh-copy-id:
bashssh-copy-id user@server_ip
يتم استخدام هذا الأمر لنقل المفتاح العام إلى الخادم البعيد، مما يسمح لك بتسجيل الدخول إلى الخادم دون الحاجة إلى إدخال كلمة مرور.
2.2 التحقق من الاتصال
بمجرد نسخ المفتاح إلى الخادم، يمكن التحقق من الاتصال عبر SSH باستخدام الأمر التالي:
bashssh user@server_ip
إذا تم الاتصال بنجاح دون الحاجة إلى إدخال كلمة مرور، فهذا يعني أن المفاتيح تم إعدادها بشكل صحيح.
خطوة 3: إعداد الجدار الناري
من الضروري إعداد الجدار الناري (Firewall) لضمان أن الخادم آمن ضد الهجمات الخارجية. سيساعد الجدار الناري في تحديد السماح بالوصول فقط من المصادر الموثوقة.
3.1 تكوين الجدار الناري باستخدام ufw
في حال كانت الخوادم تستخدم أداة ufw (Uncomplicated Firewall)، يمكن فتح المنافذ المطلوبة لتطبيق PHP باستخدام الأوامر التالية:
-
فتح منفذ HTTP (80):
bashsudo ufw allow 80/tcp
-
فتح منفذ HTTPS (443):
bashsudo ufw allow 443/tcp
-
فتح منفذ SSH (22):
bashsudo ufw allow 22/tcp
-
التحقق من حالة الجدار الناري:
bashsudo ufw status
3.2 تكوين الجدار الناري باستخدام firewalld
إذا كانت الخوادم تستخدم أداة firewalld، يمكن فتح المنافذ باستخدام الأوامر التالية:
-
فتح منفذ HTTP (80):
bashsudo firewall-cmd --zone=public --add-port=80/tcp --permanent
-
فتح منفذ HTTPS (443):
bashsudo firewall-cmd --zone=public --add-port=443/tcp --permanent
-
فتح منفذ SSH (22):
bashsudo firewall-cmd --zone=public --add-port=22/tcp --permanent
-
إعادة تحميل الإعدادات لتفعيل التغييرات:
bashsudo firewall-cmd --reload
خطوة 4: إعداد Ansible لنشر تطبيق PHP
الآن بعد أن قمنا بإعداد مفاتيح SSH والجدار الناري، يمكننا إعداد Ansible لنشر تطبيق PHP على الخوادم.
4.1 إنشاء ملف Ansible Inventories
ملف inventory في Ansible يحتوي على قائمة بالخوادم التي ستتم إدارة التطبيقات عليها. يمكن إنشاء ملف inventory يحتوي على عناوين IP الخاصة بالخوادم مثل:
ini[web_servers]
server1 ansible_host=192.168.1.10 ansible_user=user
server2 ansible_host=192.168.1.11 ansible_user=user
4.2 كتابة ملف Playbook
الخطوة التالية هي إنشاء Playbook الذي سيحتوي على الأوامر التي يجب أن ينفذها Ansible. يتم كتابة Playbook باستخدام YAML (Yet Another Markup Language). إليك مثالًا على Playbook لنشر تطبيق PHP:
yaml---
- name: نشر تطبيق PHP
hosts: web_servers
become: yes
tasks:
- name: تحديث الحزم
apt:
update_cache: yes
upgrade: yes
- name: تثبيت خادم الويب Apache
apt:
name: apache2
state: present
- name: تثبيت PHP
apt:
name: php libapache2-mod-php
state: present
- name: رفع ملفات التطبيق
copy:
src: /local/path/to/your/php/app/
dest: /var/www/html/
owner: www-data
group: www-data
mode: '0755'
- name: إعادة تشغيل خدمة Apache
service:
name: apache2
state: restarted
في هذا المثال:
-
يتم تحديث الحزم وتثبيت Apache وPHP على الخوادم.
-
يتم رفع ملفات تطبيق PHP من المسار المحلي إلى الخوادم.
-
أخيرًا، يتم إعادة تشغيل خدمة Apache لتطبيق التغييرات.
4.3 تشغيل Playbook
بعد إعداد Playbook، يمكن تشغيله باستخدام الأمر التالي:
bashansible-playbook -i inventory deploy_php_app.yml
سيقوم Ansible بتنفيذ الأوامر المذكورة في Playbook على الخوادم المحددة في ملف inventory.
خطوة 5: التحقق من النشر
بمجرد تنفيذ Playbook، يجب التحقق من أن التطبيق قد تم نشره بنجاح. يمكن الوصول إلى التطبيق عبر متصفح الويب باستخدام عنوان IP الخاص بالخادم:
cpphttp://192.168.1.10
إذا كانت عملية النشر ناجحة، يجب أن ترى تطبيق PHP يعمل على الخادم.
الخاتمة
استخدام Ansible لنشر تطبيق PHP يعد من الطرق الفعالة والآمنة لتنفيذ عمليات النشر عبر العديد من الخوادم. من خلال إعداد مفاتيح SSH، يمكنك ضمان أمان الاتصال بين الخوادم، بينما يساعد الجدار الناري في تأمين الخوادم ضد الهجمات الخارجية. باستخدام Ansible، يمكن أتمتة عملية نشر التطبيقات، مما يوفر الوقت ويقلل من الأخطاء البشرية.

